import socket
import os
#目的服务器的ip地址
serverIp = '10.35.36.91'
#目的服务器套接字的端口号
serverPort = 12000 
MaxBytes = 1024
serverAddr = (serverIp, serverPort)
#创建客户的TCP套接字
cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#建立TCP链接
cs.connect(serverAddr)
print('已建立链接')
select = input('输入0发送信息，输入1发送文件:')
if select == '0':
    message = input('input your base information:\n')
    cs.send('0'.encode()) #0表示即将发送信息
    _ = cs.recv(MaxBytes)    # 从服务器收到消息才能继续发送
    cs.send(message.encode())
else:
    while True:
        filepath = input('input your file path:')
        if os.path.exists(filepath):
            filename = ''#文件名
            #1表示即将发送文件名
            cs.send('1'.encode()) 
            #从服务器收到消息才能继续发送
            _ = cs.recv(MaxBytes)   
            #从文件路径得到文件名
            if '\\' in filepath:  
                pos = 0
                for i,j in zip(filepath[::-1],range(len(filepath))):
                    if i == '\\':
                        pos = j
                        break
                filename = filepath[len(filepath)-pos:]
            else:
                filename = filepath
            #发送文件名
            cs.send(filename.encode())
            _ = cs.recv(MaxBytes)
            #2表示即将发送文件大小
            cs.send('2'.encode())
            _ = cs.recv(MaxBytes) 
            #求文件的大小
            filesize = str(os.path.getsize(filepath))
            print("FileSize: ",filesize)
            #发送文件大小
            cs.send(filesize.encode())
            _ = cs.recv(MaxBytes)   
            #打开代码文件并发送
            f = open(filepath, "rb")
            for line in f:
                cs.send(line)
            break
        else:
            print('无效的文件路径')
recvMessage = cs.recv(MaxBytes)
print('From server: ',recvMessage.decode())
cs.close()